1 DIM V(19),MP(11),MX(11),MY(11),MV(11),YV(19),SP(19) :: CALL INIT :: CALL CLEAR :: CALL SCREEN(2) :: CALL LOAD(-31806,0) :: SP(1)=124 :: SP(19)=128 :: V(0)=30
2 RANDOMIZE(9) :: CALL CLEAR :: CALL SCREEN(2) :: FOR C=1 TO 30 :: CALL HCHAR(RND*23+1,RND*31+1,140) :: NEXT C
3 V(19)=15 :: Y=16 :: Z=5 :: T=-1 :: DISPLAY AT(1,1):"SCORE:000000       HI:000000" :: CALL HCHAR(2,1,95,32)
4 CALL MAGNIFY(3) :: A$(0)=RPT$(".",28)&"LUNAR RESCUE (C) 2010 DSAPSC   PRESS (FIRE) TO BEGIN"&RPT$(".",56) :: A$(2)=SEG$(A$(0),1,66)&"    "&SEG$(A$(0),71,56)
5 R=10 :: FOR C=1 TO 50 :: READ B,B$ :: CALL CHAR(B,B$) :: NEXT C :: FOR C=1 TO 10 :: READ MP(C),MY(C),MX(C),MV(C) :: NEXT C :: CALL CHAR(36,RPT$("F",64)) :: FOR C=1 TO 3 :: READ ST(C),SV(C)
6 NEXT C :: S$="111332323233111" :: CALL COLOR(14,Y,1,2,Y,1,3,Y,1,4,Y,1,5,Y,1,6,Y,1,7,Y,1,8,Y,1,9,Z,1,11,Z,1,12,Z,1)
7 CALL MAGNIFY(3) :: A$(0)=RPT$(".",28)&"LUNAR RESCUE (C) 2010 DSAPSC   PRESS (FIRE) TO BEGIN"&RPT$(".",56) :: A$(2)=SEG$(A$(0),1,66)&"    "&SEG$(A$(0),71,56)
8 CALL HCHAR(22,1,98,32) :: DISPLAY AT(22,1):"```````ZZZ````````ZZZ```````"; :: CALL SPRITE(#1,116,Z,153,1,#3,120,Z,153,241)
9 FOR C=1 TO 81 :: T=-T :: DISPLAY AT(24,1):SEG$(A$(T+1),C,28); :: CALL KEY(1,K,S) :: IF K=18 THEN SN=5 :: DISPLAY AT(13,10):"SOS  ALERT" :: C=81
10 NEXT C :: IF K<>18 THEN 9 ELSE DISPLAY AT(1,7):"000000"; :: SC=0 :: YV(0)=4 :: YV(19)=2 :: L=1
11 DISPLAY AT(24,1):SEG$(A$(0),29,28); :: FOR C=1 TO 15 :: CALL SOUND(ST(VAL(SEG$(S$,C,1))),500,SV(VAL(SEG$(S$,C,1)))) :: NEXT C :: SP(0)=124 :: SP(19)=128
12 VF=4 :: CALL LOAD(-31806,64) :: FOR C=1 TO 10 :: CALL SPRITE(#C+4,MP(C),1,MY(C),MX(C),0,VF*MV(C)) :: NEXT C :: CALL LOAD(-31806,0)
13 CALL COLOR(#5,R,#6,R,#7,R,#8,R,#9,R,#10,R,#11,R,#12,R,#13,R,#14,R) :: DISPLAY AT(13,10):"          "; :: CALL SPRITE(#16,124,16,14,116)
14 CALL SOUND(10,500,20) :: CALL KEY(1,K,S) :: IF K<>18 THEN 14 ELSE YV(0)=4 :: YV(19)=2 :: CALL POSITION(#16,Y,X) :: CALL SPRITE(#17,36,1,173,X-1)
15 FOR SS=10 TO 30 STEP 3 :: CALL JOYST(1,X,Y) :: OK=K :: CALL KEY(1,K,S) :: CALL COINC(ALL ,C) :: IF C=-1 THEN CALL LOAD(-31806,64) :: GOTO 17
16 CALL PATTERN(#16,SP(K+1)) :: CALL SOUND(-400,-7,V(K+1),600,SS) :: CALL MOTION(#16,YV(K+1),X,#17,0,X) :: NEXT SS :: GOTO 15
17 CALL POSITION(#16,Y,X) :: IF Y<155 OR OK<>18 THEN 24 ELSE IF(X>72 AND X<84)OR(X>160 AND X<172)THEN 18 ELSE 24
18 FOR C=4000 TO 10000 STEP 1000 :: CALL SOUND(-10,110,30,110,30,C,30,-8,0) :: NEXT C :: YV(0)=-2 :: YV(19)=-4 :: SC=INT(SC+50*L) :: DISPLAY AT(1,13-LEN(STR$(SC))):STR$(SC);
19 CALL POSITION(#16,Y,X) :: CALL LOCATE(#17,2,X) :: CALL MOTION(#16,-2,0) :: CALL LOAD(-31806,0)
20 FOR SS=10 TO 30 STEP 3 :: CALL JOYST(1,X,Y) :: CALL KEY(1,K,S) :: CALL COINC(ALL ,C) :: IF C=-1 THEN CALL LOAD(-31806,64) :: GOTO 22
21 CALL PATTERN(#16,SP(K+1)) :: CALL SOUND(-400,-7,V(K+1),900,SS) :: CALL MOTION(#16,YV(K+1),X,#17,0,X) :: NEXT SS :: GOTO 20
22 CALL POSITION(#16,Y,X) :: IF Y>18 THEN 24 ELSE SC=INT(SC+L*600) :: YV(0)=4 :: YV(19)=2 :: DISPLAY AT(1,13-LEN(STR$(SC))):STR$(SC); :: VF=VF+.25 :: CALL SOUND(-300,523,5,880,15)
23 L=L*1.5 :: CALL MOTION(#16,0,0,#17,0,0) :: CALL PATTERN(#16,124) :: FOR C=1 TO 10 :: CALL MOTION(#C+4,0,VF*MV(C)) :: NEXT C :: CALL LOAD(-31806,0) :: GOTO 14
24 CALL SCREEN(2) :: CALL POSITION(#16,Y,X) :: CALL DELSPRITE(ALL) :: CALL SPRITE(#1,132,16,Y,X,-2,-2,#2,132,16,Y,X,-2,2,#3,132,16,Y,X,2,-2)
25 CALL SPRITE(#4,132,16,Y,X,2,2) :: CALL LOAD(-31806,0) :: CALL SCREEN(2) :: FOR C=25 TO 0 STEP-5 :: CALL SOUND(-300,-6,C) :: NEXT C
26 CALL PATTERN(#1,140,#2,140,#3,140,#4,140) :: FOR C=1 TO 30 :: CALL SOUND(1,-7,C) :: NEXT C :: CALL DELSPRITE(ALL) :: IF HS>=SC THEN 7
27 HS=SC :: DISPLAY AT(1,29-LEN(STR$(HS))):STR$(HS); :: FOR D=1 TO 3 :: FOR C=0 TO 20 STEP 3 :: CALL SOUND(-100,3000,C) :: NEXT C :: NEXT D :: GOTO 7
28 DATA 83,7EFEC0FC7E06FEFC,67,7EFEC0C0C0C0FE7E,79,7CFEC6C6C6C6FE7C,82,FCFEC6C6FEFCCCC6,69,FEFEC0F8F8C0FEFE,72,C6C6C6FEFEC6C6C6
29 DATA 73,FEFE30303030FEFE,71,7EFEC0C0CEC6FE7C,65,7CFEC6C6FEFEC6C6,77,C6EEFED6C6C6C6C6,76,C0C0C0C0C0C0FEFE,85,C6C6C6C6C6C6FE7C
30 DATA 78,C6E6F6DECEC6C6C6,86,C6C6C6C6EE7C3810,66,FCFEC6FCFCC6FEFC,89,C6C6C6FE7C303030,68,FCFEC6C6C6C6FEFC,80,FCFEC2C2FEFCC0C0
31 DATA 70,FEFEC0F8F8C0C0C0,95,000000FFFF,48,7CFEC6D6D6C6FE7C,49,30F0F0303030FCFC,50,FCFE067EFCC0FEFE,51,FEFE067E7E06FEFE
32 DATA 52,C6C6C6FEFE060606,53,FEFE80FCFE06FEFC,54,3060C0FCFEC6FEFC,55,FEFE060C18181818,56,7CFEC67CFEC6FE7C,57,7EFEC6FE7E060C18
33 DATA 84,FEFE303030303030,96,00002277FFFFFFFF,90,00000000FFAA55FF,98,FFFFFFFFFFFFFFFF,40,060C181818180C06,41,6030181818183060
34 DATA 116,80C0E0F0F8FCFEFFFFFFFFFFFFFFFFFF,118,0,119,80C0E0F0F8FCFEFF,120,0,121,0103070F1F3F7FFF0103070F1F3F7FFFFFFFFFFFFFFFFFFF
35 DATA 104,032F7C70207060C0C0603060D0796F0610B8EC4C06030603060306062C76DC88,108,00040F1F183030183818311B0E040000000040E0B01830180C18B0F06
36 DATA 124,03070F0B13133F3F3F1F17204040E00080C0E0A09090F8F8F8F0D00804040E00,128,03070F0B13133F3F3F1F15254442E20180C0E0A09090F8F8F8F0504844848E
37 DATA 132,02080024015005A008A2004802100401802088002200114009400A8024801040,140,000000000000001,141,0,142,0,143,0
38 DATA 108,44,92,1,108,52,220,1,104,76,236,-1,108,68,123,-1,104,76,60,-1,108,96,26,1
39 DATA 108,100,100,1,108,92,196,1,104,124,44,-1,104,124,180,-1,50,0,200,0,100,30
